package br.dataconverter.util;

public enum DataType {
    STRING(1),
    INTEGER(2),
    DOUBLE(3),
    DATE(4);

    private int value;

    /**
     * Construtor privado da classe.
     *
     * @param value Valor inteiro associado a cada tipo de status válido.
     */
    private DataType(int value) {
        this.value = value;
    }

    /**
     * Recupera o valor inteiro associado à constante enum.
     *
     * @return O valor inteiro associado à constante enum.
     */
    public int getValue() {
        return this.value;
    }

    /**
     * Recupera a constante enum dessa classe a partir do valor inteiro
     * fornecido. Caso não haja correspondência a nenhuma constante, é retornado
     * null.
     *
     * @param value Valor inteiro associado à constante enum que se deseja
     * recuperar.
     * @return Constante enum associado ao valor inteiro fornecido.
     */
    public static DataType valueOf(int value) {
        switch (value) {
            case 1:
                return DataType.STRING;
            case 2:
                return DataType.INTEGER;
            case 3:
                return DataType.DOUBLE;
            case 4:
                return DataType.DATE;
            default:
                return null;
        }
    }
}
